package simd

var iv224 = [16]uint32{
    0x33586E9F, 0x12FFF033, 0xB2D9F64D, 0x6F8FEA53,
    0xDE943106, 0x2742E439, 0x4FBAB5AC, 0x62B9FF96,
    0x22E7B0AF, 0xC862B3A8, 0x33E00CDC, 0x236B86A6,
    0xF64AE77C, 0xFA373B76, 0x7DC1EE5B, 0x7FB29CE8,
}

var iv256 = [16]uint32{
    0x4D567983, 0x07190BA9, 0x8474577B, 0x39D726E9,
    0xAAF3D925, 0x3EE20B03, 0xAFD5E751, 0xC96006D3,
    0xC2C2BA14, 0x49B3BCB4, 0xF67CAF46, 0x668626C9,
    0xE2EAA8D2, 0x1FF47833, 0xD0C661A5, 0x55693DE1,
}

var iv384 = [32]uint32{
    0x8A36EEBC, 0x94A3BD90, 0xD1537B83, 0xB25B070B,
    0xF463F1B5, 0xB6F81E20, 0x0055C339, 0xB4D144D1,
    0x7360CA61, 0x18361A03, 0x17DCB4B9, 0x3414C45A,
    0xA699A9D2, 0xE39E9664, 0x468BFE77, 0x51D062F8,
    0xB9E3BFE8, 0x63BECE2A, 0x8FE506B9, 0xF8CC4AC2,
    0x7AE11542, 0xB1AADDA1, 0x64B06794, 0x28D2F462,
    0xE64071EC, 0x1DEB91A8, 0x8AC8DB23, 0x3F782AB5,
    0x039B5CB8, 0x71DDD962, 0xFADE2CEA, 0x1416DF71,
}

var iv512 = [32]uint32{
    0x0BA16B95, 0x72F999AD, 0x9FECC2AE, 0xBA3264FC,
    0x5E894929, 0x8E9F30E5, 0x2F1DAA37, 0xF0F2C558,
    0xAC506643, 0xA90635A5, 0xE25B878B, 0xAAB7878F,
    0x88817F7A, 0x0A02892B, 0x559A7550, 0x598F657E,
    0x7EEF60A1, 0x6B70E3E8, 0x9C1714D1, 0xB958E2A8,
    0xAB02675E, 0xED1C014F, 0xCD8D65BB, 0xFDB7A257,
    0x09254899, 0xD699C7BC, 0x9019B6DC, 0x2B9022E4,
    0x8FA14956, 0x21BF9BD3, 0xB94D0943, 0x6FFDDC22,
}

// ===========

var alphaTab256 = []int32{
      1,  41, 139,  45,  46,  87, 226,  14,  60, 147, 116, 130,
    190,  80, 196,  69,   2,  82,  21,  90,  92, 174, 195,  28,
    120,  37, 232,   3, 123, 160, 135, 138,   4, 164,  42, 180,
    184,  91, 133,  56, 240,  74, 207,   6, 246,  63,  13,  19,
      8,  71,  84, 103, 111, 182,   9, 112, 223, 148, 157,  12,
    235, 126,  26,  38,  16, 142, 168, 206, 222, 107,  18, 224,
    189,  39,  57,  24, 213, 252,  52,  76,  32,  27,  79, 155,
    187, 214,  36, 191, 121,  78, 114,  48, 169, 247, 104, 152,
     64,  54, 158,  53, 117, 171,  72, 125, 242, 156, 228,  96,
     81, 237, 208,  47, 128, 108,  59, 106, 234,  85, 144, 250,
    227,  55, 199, 192, 162, 217, 159,  94, 256, 216, 118, 212,
    211, 170,  31, 243, 197, 110, 141, 127,  67, 177,  61, 188,
    255, 175, 236, 167, 165,  83,  62, 229, 137, 220,  25, 254,
    134,  97, 122, 119, 253,  93, 215,  77,  73, 166, 124, 201,
     17, 183,  50, 251,  11, 194, 244, 238, 249, 186, 173, 154,
    146,  75, 248, 145,  34, 109, 100, 245,  22, 131, 231, 219,
    241, 115,  89,  51,  35, 150, 239,  33,  68, 218, 200, 233,
     44,   5, 205, 181, 225, 230, 178, 102,  70,  43, 221,  66,
    136, 179, 143, 209,  88,  10, 153, 105, 193, 203,  99, 204,
    140,  86, 185, 132,  15, 101,  29, 161, 176,  20,  49, 210,
    129, 149, 198, 151,  23, 172, 113,   7,  30, 202,  58,  65,
     95,  40,  98, 163,
}

var yoffN256 = []int32{
      1,  98,  95,  58,  30, 113,  23, 198, 129,  49, 176,  29,
     15, 185, 140,  99, 193, 153,  88, 143, 136, 221,  70, 178,
    225, 205,  44, 200,  68, 239,  35,  89, 241, 231,  22, 100,
     34, 248, 146, 173, 249, 244,  11,  50,  17, 124,  73, 215,
    253, 122, 134,  25, 137,  62, 165, 236, 255,  61,  67, 141,
    197,  31, 211, 118, 256, 159, 162, 199, 227, 144, 234,  59,
    128, 208,  81, 228, 242,  72, 117, 158,  64, 104, 169, 114,
    121,  36, 187,  79,  32,  52, 213,  57, 189,  18, 222, 168,
     16,  26, 235, 157, 223,   9, 111,  84,   8,  13, 246, 207,
    240, 133, 184,  42,   4, 135, 123, 232, 120, 195,  92,  21,
      2, 196, 190, 116,  60, 226,  46, 139,
}

var yoffF256 = []int32{
      2, 156, 118, 107,  45, 212, 111, 162,  97, 249, 211,   3,
     49, 101, 151, 223, 189, 178, 253, 204,  76,  82, 232,  65,
     96, 176, 161,  47, 189,  61, 248, 107,   0, 131, 133, 113,
     17,  33,  12, 111, 251, 103,  57, 148,  47,  65, 249, 143,
    189,   8, 204, 230, 205, 151, 187, 227, 247, 111, 140,   6,
     77,  10,  21, 149, 255, 101, 139, 150, 212,  45, 146,  95,
    160,   8,  46, 254, 208, 156, 106,  34,  68,  79,   4,  53,
    181, 175,  25, 192, 161,  81,  96, 210,  68, 196,   9, 150,
      0, 126, 124, 144, 240, 224, 245, 146,   6, 154, 200, 109,
    210, 192,   8, 114,  68, 249,  53,  27,  52, 106,  70,  30,
     10, 146, 117, 251, 180, 247, 236, 108,
}

var pp4k256 = []int{
    1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2,
}

var wsp256 = []int32{
     4 << 3,  6 << 3,  0 << 3,  2 << 3,
     7 << 3,  5 << 3,  3 << 3,  1 << 3,
    15 << 3, 11 << 3, 12 << 3,  8 << 3,
     9 << 3, 13 << 3, 10 << 3, 14 << 3,
    17 << 3, 18 << 3, 23 << 3, 20 << 3,
    22 << 3, 21 << 3, 16 << 3, 19 << 3,
    30 << 3, 24 << 3, 25 << 3, 31 << 3,
    27 << 3, 29 << 3, 28 << 3, 26 << 3,
}

// ===========

var alphaTab512 = []int32{
      1,  41, 139,  45,  46,  87, 226,  14,  60, 147, 116, 130,
    190,  80, 196,  69,   2,  82,  21,  90,  92, 174, 195,  28,
    120,  37, 232,   3, 123, 160, 135, 138,   4, 164,  42, 180,
    184,  91, 133,  56, 240,  74, 207,   6, 246,  63,  13,  19,
      8,  71,  84, 103, 111, 182,   9, 112, 223, 148, 157,  12,
    235, 126,  26,  38,  16, 142, 168, 206, 222, 107,  18, 224,
    189,  39,  57,  24, 213, 252,  52,  76,  32,  27,  79, 155,
    187, 214,  36, 191, 121,  78, 114,  48, 169, 247, 104, 152,
     64,  54, 158,  53, 117, 171,  72, 125, 242, 156, 228,  96,
     81, 237, 208,  47, 128, 108,  59, 106, 234,  85, 144, 250,
    227,  55, 199, 192, 162, 217, 159,  94, 256, 216, 118, 212,
    211, 170,  31, 243, 197, 110, 141, 127,  67, 177,  61, 188,
    255, 175, 236, 167, 165,  83,  62, 229, 137, 220,  25, 254,
    134,  97, 122, 119, 253,  93, 215,  77,  73, 166, 124, 201,
     17, 183,  50, 251,  11, 194, 244, 238, 249, 186, 173, 154,
    146,  75, 248, 145,  34, 109, 100, 245,  22, 131, 231, 219,
    241, 115,  89,  51,  35, 150, 239,  33,  68, 218, 200, 233,
     44,   5, 205, 181, 225, 230, 178, 102,  70,  43, 221,  66,
    136, 179, 143, 209,  88,  10, 153, 105, 193, 203,  99, 204,
    140,  86, 185, 132,  15, 101,  29, 161, 176,  20,  49, 210,
    129, 149, 198, 151,  23, 172, 113,   7,  30, 202,  58,  65,
     95,  40,  98, 163,
}

var yoffN512 = []int32{
      1, 163,  98,  40,  95,  65,  58, 202,  30,   7, 113, 172,
     23, 151, 198, 149, 129, 210,  49,  20, 176, 161,  29, 101,
     15, 132, 185,  86, 140, 204,  99, 203, 193, 105, 153,  10,
     88, 209, 143, 179, 136,  66, 221,  43,  70, 102, 178, 230,
    225, 181, 205,   5,  44, 233, 200, 218,  68,  33, 239, 150,
     35,  51,  89, 115, 241, 219, 231, 131,  22, 245, 100, 109,
     34, 145, 248,  75, 146, 154, 173, 186, 249, 238, 244, 194,
     11, 251,  50, 183,  17, 201, 124, 166,  73,  77, 215,  93,
    253, 119, 122,  97, 134, 254,  25, 220, 137, 229,  62,  83,
    165, 167, 236, 175, 255, 188,  61, 177,  67, 127, 141, 110,
    197, 243,  31, 170, 211, 212, 118, 216, 256,  94, 159, 217,
    162, 192, 199,  55, 227, 250, 144,  85, 234, 106,  59, 108,
    128,  47, 208, 237,  81,  96, 228, 156, 242, 125,  72, 171,
    117,  53, 158,  54,  64, 152, 104, 247, 169,  48, 114,  78,
    121, 191,  36, 214, 187, 155,  79,  27,  32,  76,  52, 252,
    213,  24,  57,  39, 189, 224,  18, 107, 222, 206, 168, 142,
     16,  38,  26, 126, 235,  12, 157, 148, 223, 112,   9, 182,
    111, 103,  84,  71,   8,  19,  13,  63, 246,   6, 207,  74,
    240,  56, 133,  91, 184, 180,  42, 164,   4, 138, 135, 160,
    123,   3, 232,  37, 120,  28, 195, 174,  92,  90,  21,  82,
      2,  69, 196,  80, 190, 130, 116, 147,  60,  14, 226,  87,
     46,  45, 139,  41,
}

var yoffF512 = []int32{
      2, 203, 156,  47, 118, 214, 107, 106,  45,  93, 212,  20,
    111,  73, 162, 251,  97, 215, 249,  53, 211,  19,   3,  89,
     49, 207, 101,  67, 151, 130, 223,  23, 189, 202, 178, 239,
    253, 127, 204,  49,  76, 236,  82, 137, 232, 157,  65,  79,
     96, 161, 176, 130, 161,  30,  47,   9, 189, 247,  61, 226,
    248,  90, 107,  64,   0,  88, 131, 243, 133,  59, 113, 115,
     17, 236,  33, 213,  12, 191, 111,  19, 251,  61, 103, 208,
     57,  35, 148, 248,  47, 116,  65, 119, 249, 178, 143,  40,
    189, 129,   8, 163, 204, 227, 230, 196, 205, 122, 151,  45,
    187,  19, 227,  72, 247, 125, 111, 121, 140, 220,   6, 107,
     77,  69,  10, 101,  21,  65, 149, 171, 255,  54, 101, 210,
    139,  43, 150, 151, 212, 164,  45, 237, 146, 184,  95,   6,
    160,  42,   8, 204,  46, 238, 254, 168, 208,  50, 156, 190,
    106, 127,  34, 234,  68,  55,  79,  18,   4, 130,  53, 208,
    181,  21, 175, 120,  25, 100, 192, 178, 161,  96,  81, 127,
     96, 227, 210, 248,  68,  10, 196,  31,   9, 167, 150, 193,
      0, 169, 126,  14, 124, 198, 144, 142, 240,  21, 224,  44,
    245,  66, 146, 238,   6, 196, 154,  49, 200, 222, 109,   9,
    210, 141, 192, 138,   8,  79, 114, 217,  68, 128, 249,  94,
     53,  30,  27,  61,  52, 135, 106, 212,  70, 238,  30, 185,
     10, 132, 146, 136, 117,  37, 251, 150, 180, 188, 247, 156,
    236, 192, 108,  86,
}

var pp8k512 = []int{
    1, 6, 2, 3, 5, 7, 4, 1, 6, 2, 3,
}

var wbp512 = []int32{
     4 << 4,  6 << 4,  0 << 4,  2 << 4,
     7 << 4,  5 << 4,  3 << 4,  1 << 4,
    15 << 4, 11 << 4, 12 << 4,  8 << 4,
     9 << 4, 13 << 4, 10 << 4, 14 << 4,
    17 << 4, 18 << 4, 23 << 4, 20 << 4,
    22 << 4, 21 << 4, 16 << 4, 19 << 4,
    30 << 4, 24 << 4, 25 << 4, 31 << 4,
    27 << 4, 29 << 4, 28 << 4, 26 << 4,
}
